package com.boatAnchorAssistant.service.service.in;

import com.boatAnchorAssistant.pojo.dto.role.CreateAdminRoleDto;
import nirvana.core.domains.vo.PageResult;
import com.boatAnchorAssistant.pojo.param.role.*;
import com.boatAnchorAssistant.pojo.vo.role.*;

import java.util.List;


/**
 * 【描 述】：角色服务
 * 【环 境】：J2SE
 * 【详 细】：
 *
 */
public interface RoleService {

    /**
     * 创建角色
     * @param param
     */
    void createRole(CreateRoleParam param);

    /**
     * 修改角色
     * @param param
     */
    void editRole(EditRoleParam param);

    /**
     * 移除角色
     * @param id
     */
    void removeRole(Long id);

    /**
     * 启动/禁用角色
     * @param id
     */
    void enabledRole(Long id);

    /**
     * 获取角色详情
     * @param id
     * @return
     */
    GetRoleVo getRole(Long id);

    /**
     * 获取角色列表
     * @param param
     * @return
     */
    PageResult<GetRoleListVo> getRoleList(GetRoleListParam param);


    /**
     * 获取角色下拉列表
     *
     * @param param
     * @return
     */
    List<GetRoleDownListVo> getRoleDownList(GetRoleDownListParam param);

    /**
     * 创建管理员角色
     *
     * @param dto
     * @return
     */
    void createAdminRole(CreateAdminRoleDto dto);


    /**
     * 批量删除角色
     * @param idList
     */
    void bathRemoveRole(List<Long> idList);


    /**
     * 根据部门id删除角色
     * @param departmentIds
     */
    void removeRoleByDepartmentIds(List<Long> departmentIds);


}